﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ilanver.Core.PersistenceSupport.NHibernate
{
    public interface INHibernateRepositoryWithTypedId<T1, T2> : IRepositoryWithTypedId<T1, T2>
    {
        T1 Get(T2 id, Enums.LockMode lockMode);

        T1 Load(T2 id);

        T1 Load(T2 id, Enums.LockMode lockMode);

        IList<T1> FindAll(T1 exampleInstance, params string[] propertiesToExclude);

        T1 FindOne(T1 exampleInstance, params string[] propertesToExclude);

        T1 Save(T1 entity);

        T1 Update(T1 entity);

        void Evict(T1 entity);
    }
}
